package admin_data_api

import (
	"blog_go/global"
	"blog_go/models"
	"blog_go/models/res"
	"github.com/gin-gonic/gin"
)

type DataSumRsp struct {
	UserCount       int64 `json:"user_count"`        // 用户总数
	ArticleCount    int64 `json:"article_count"`     // 文章总数
	MessageCount    int64 `json:"message_count"`     // 消息总数
	ChatGroupCount  int64 `json:"chat_group_count"`  // 群聊消息总数
	TodayLoginCount int64 `json:"today_login_count"` // 群聊消息总数
	TodaySignCount  int64 `json:"today_sign_count"`  // 群聊消息总数

}

// DataSum 数据总计
// @Tags 数据统计
// @Summary 数据总计
// @Description 数据总计
// @Param token header string true "token"
// @Router /api/admin/data/sum [get]
// @Produce json
// @Success 200 {object} res.Response{data=DataSumRsp}
func (AdminDataApi) DataSum(c *gin.Context) {
	var userCount, articleCount, messageCount, chatGroupCount int64
	var todayLoginCount, todaySignCount int64
	// 用户总数
	global.DB.Model(&models.UserModel{}).Count(&userCount)
	// 文章总数
	global.DB.Model(&models.ArticleModel{}).Count(&articleCount)
	// 消息总数
	global.DB.Model(&models.MessageModel{}).Count(&messageCount)
	// 群聊消息总数
	isGroup := true
	global.DB.Model(&models.ChatModel{IsGroup: &isGroup}).Count(&chatGroupCount)
	// 今日登录总数
	global.DB.Model(&models.LoginDataModel{}).Where("to_days(created_at)=(now())").
		Select("count(id)").
		Scan(&todayLoginCount)
	// 今日注册总数
	global.DB.Model(&models.UserModel{}).Where("to_days(created_at)=(now())").
		Select("count(id)").
		Scan(&todaySignCount)
	res.OkWithDate(DataSumRsp{
		UserCount:       userCount,
		ArticleCount:    articleCount,
		MessageCount:    messageCount,
		ChatGroupCount:  chatGroupCount,
		TodayLoginCount: todayLoginCount,
		TodaySignCount:  todaySignCount,
	}, c)
}
